package com.gin.kotlin.vegetables_kot.base

import android.content.Intent
import androidx.annotation.DrawableRes
import androidx.fragment.app.Fragment
import androidx.viewpager2.adapter.FragmentStateAdapter


/**
 * FragmentState容器 ，配合 [FragmentStateAdapter] 使用
 */
class FragmentStateContainer(
    /**
     * 标题，可用于TabLayout
     */
    val title: CharSequence? = null,
    /**
     * 该Fragment的唯一ID， 可以填写menuId等
     */
    val id: Int? = null,
    /**
     * Fragment对应的图标
     */
    @DrawableRes
    val icon:Int?=null,
    /**
     * Fragment的实例化方法
     */
    val newInstance: ( intent: Intent?) -> Fragment,
){

    companion object{
        /**
         * 实例化指定位置的Fragment，用于 [FragmentStateAdapter.createFragment] 实例化Fragment
         * @param index 位置
         * @param context 上下文
         * @param intent 意图
         * @return Fragment
         */
        fun newInstance(list:List<FragmentStateContainer>,index: Int,  intent: Intent? = null) = list[index].newInstance(intent)

        /**
         * 根据ID字段返回容器的位置，用于配合TabLayout等
         * @param id Int
         * @return Int?
         */
        fun findIndexById(list:List<FragmentStateContainer>,id: Int) = list.firstOrNull { it.id == id }?.let { list.indexOf(it) }
    }
}